package com.watson.ftp.demo;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;

/**
 * @Author watson
 * @Date 2022/6/13 16:06
 * @Description: TODO
 * @Version 1.0
 */
public class FtpConfig {
    private static final Logger logger = LoggerFactory.getLogger(FtpConfig.class);
    /**
     * 本地字符编码
     */
    public static String LOCAL_CHARSET = "GBK";

    // FTP协议里面，规定文件名编码为iso-8859-1
    public static String SERVER_CHARSET = "ISO-8859-1";

    /**
     * 建立连接
     *
     * @param ftp
     * @return
     */
    public static boolean ftpConnect(FTPClient ftp) {
        int reply;
        logger.info(" --- 开始建立ftp连接 --- ");
        try {
            // 连接FTP服务器
            ftp.connect("192.168.43.112", 22);
            // 登录
            ftp.login("test", "123456");
            reply = ftp.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftp.disconnect();
                return false;
            }
            logger.info(" --- ftp-连接成功 --- ");
            // 开启服务器对UTF-8的支持，如果服务器支持就用UTF-8编码，否则就使用本地编码（GBK）.

            if (FTPReply.isPositiveCompletion(ftp.sendCommand("OPTS UTF8", "ON"))) {
                LOCAL_CHARSET = "UTF-8";
            }
            ftp.setControlEncoding(LOCAL_CHARSET);
            // 注意此处不开启被动模式
//            ftp.enterLocalPassiveMode();                        // 设置被动模式
            // 设置传输的模式
            ftp.setFileType(FTP.BINARY_FILE_TYPE);

            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }

}
